package com.itlaobing.core;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

//理解execute方法返回值的含义/获取由数据库产生的键

public class EstablishingGeneratedKey {
    public static void main(String[] args) throws Exception {

        JdbcUtils x = JdbcUtils.getInstace(DatabaseType.MYSQL);

        x.load(); // 加载数据库驱动类
        Connection conn = x.connection(); // 建立数据库连接
        Statement stmt = x.statement(conn); // 通过连接对象来创建Statement实例

        /*
            auto_increment 自增长 适用于 MySQL 且必须设置主键
            generated_keys 自动生成的键  默认： NO_GENERATED_KEYS 返回生成的键：RETURN_GENERATED_KEYS
         */

        //String create = "CREATE TABLE t_students ( id INT(5) auto_increment , name VARCHAR(20) , gender VARCHAR(6) , PRIMARY KEY(id) )";
        String insert = "INSERT INTO t_students ( name , gender ) VALUES ( '攀攀' , '男' ) , ( '妹由' , '女' )";

        int count = stmt.executeUpdate(insert, Statement.RETURN_GENERATED_KEYS);

        if (count>0){
            // 获得由数据库产生的键( Generated Keys )
            ResultSet resultSet = stmt.getGeneratedKeys();
            while (resultSet.next()){
                int id = resultSet.getInt(1);// 由数据库产生的键组成的结果集中，每行数据只有一个列
                System.out.println(id);
            }
        }
        x.release(stmt,conn);
    }
}
